\section{Axe fonctionnel (Romain)}
\label{axe_fonctionnel}
Cet axe nous permet de définir les fonctions et les fonctionnalités du système.
C'est lui qui va définir clairement les limites du système. Cette première étude
est faite de façon incrémentale. Nous allons partir de concepts très généraux
que nous détaillerons au fil de l'étude par différents diagrammes. Le principal
objectif de cette partie est la \textbf{compréhension du système}, aussi dans
certains cas, une description textuelle, un diagramme de séquence système ou un
diagramme d'activité sera fourni. 

\subsection{Les acteurs}
Il s'agit ici de définir les acteurs qui intérragissent directement avec le
système. Nous pouvons distinguer deux acteur principaux :
\begin{description}
\item[L'utilisateur] Cet acteur peut consulter l'emploi du temps
\item[L'administrateur] Cet acteur peut consulter et editer l'emploi du temps
\end{description}
Et un acteur secondaire :
\begin{description}
\item[La base de donnée]
\end{description}
La définition des roles nous permettera par la suite de voir qu'il y en a en
fait beaucoup plus. Il peut y avoir un acteur suivant le degré de permission que
l'utilisateur a avec le système.

\begin{figure}[!h]
\includegraphics[scale=0.5]{img/uml/functionnal/acteurs.eps}
\caption{Diagramme de contexte statique}
\end{figure}

\newpage
\subsection{Etude des fonctions liées au système}
Pour ce projet, nous avons décidé de découper notre système d'information en
plusieurs paquetages. Après une étude approfondi du cahier des charges et de
l'interview que nous avons réalisé, nous avons retenu cinq paquetages :
\begin{description}
\item[Authentification]
\item[Visualisation]
\item[Administration]
\item[Enseignement]
\item[Gestion des données] Gérée par la base de donnée
\end{description}
\begin{figure}[!h]
\includegraphics[scale=0.5]{img/uml/functionnal/si_edt.eps}
\caption{Diagramme des paquetages}
\end{figure}
Ces paquetages seront détaillés par la suite.
\newpage 
\subsubsection{Etude des fonctions liées à l'authentification}
Dans cette partie nous allons nous intéresser aux fonctions de
l'authentification. Ici on parlera de n'importe quel type d'acteur puisque tout
type de personne devra s'authentifier (Étudiant, Enseignant\ldots).

\begin{figure}[!ht]
\includegraphics[scale=0.5]{img/uml/functionnal/Authentification.eps}
\caption{Diagramme des cas d'utilisation pour l'authentification}
\end{figure}

\pagebreak[9]

\textbf{\large{Descriptions textuelles des principaux cas d'utilisation}}\\\\

\underline{Sommaire d'identification}\\
\textbf{Titre} : S'authentifier\\
\textbf{Résumé} : L'utilisateur souhaite s'authentifier au système. Il demande
la page d'authentification au système, entre ses données puis se connecte au
s'il est autorisé.\\
 \textbf{Acteurs} : Utilisateur (principal), SGBD
(secondaire)\\ \textbf{Date de création} : 1/05/2011\\\\ \textbf{Description du scénario}\\
\emph{Préconditions} : Le système et le SGBD sont fonctionnels.\\\\
\textbf{Scénario nominal}

\begin{figure}[!h]
\begin{center}
\begin{tabular}{|p{6cm}|p{6cm}|}
	\hline
	\textbf{Actions acteur} & \textbf{Actions système} \\
	\hline
	1. L'utilisateur demande la connexion au système. & 2. Le système vérifie que
	le SGBD est opérationnel. \\
	~ & 3. Le SGBD indique qu'il est disponible. \\
	~ & 4. Le système envoie à l'utilisateur la page lui permettant de
	s'authentifier. \\
	5. L'utilisateur envoie son identifiant et son mot de passe au système. & 6. Le
	système délègue l'authentification à la base de données. \\
	~ & 7. Le SGBD vérifie les données et détermine le rôle de l'utilisateur. \\
	~ & 8. Le système accepte la connexion et en infiorme l'utilisateur. \\
	\hline	
	\end{tabular}
\end{center}
\caption{Description textuelle du cas d'utilisation \og S'authentifier \fg}
\end{figure}

\underline{Enchainements alternatifs}

\emph{A1 : le nom d'utilisateur ou le mot de passe est erroné}\\
L'enchainement A1 démarre au point 7 du scénario nominal.\\
8. Le système indique à l'utilisateur que son identifiant ou son mot de passe
est erroné.
Le scnéario nominal reprend au point 5.\\


\underline{Enchainements d'erreur}

\emph{E1 : le SGBD est indisponible ou en panne.}\\
L'enchainement E1 démarre au point 2 du scénario nominal.\\
3. Le système attend un certain temps déterminé le système d'exploitation avant
de déterminer que le SGBD est indisponible.\\
4. Le système informe l'utilisateur de l'indisponibilité du système et le cas d'utilisation
se termine en erreur.\\

\pagebreak[9]
Le diagramme de séquence système nous permet ici de mieux comprendre 
le fonctionnement de notre module d'authentification. Nous nous
sommes fixé comme contrainte le fait qu'un utilisateur doit obligatoirement 
etre authentifié pour communiquer avec le systeme.\\
Voici le scénario nominal :
\begin{figure}[!ht] 
\includegraphics[scale=0.5]{img/uml/functionnal/DSS_sauthentifier.eps}
\caption{Diagramme de séquence système pour l'authentification}
\end{figure}


\newpage
\subsubsection{Etude des fonctions liées à l'administration}
Maintenant interressons nous à la partie administration c'est une partie assez
complexe puisqu'elle est la plus grande. En effet un administrateur possède beaucoup
d'intéractions avec le système.
\begin{figure}[!ht]
\includegraphics[scale=0.5]{img/uml/functionnal/administration.eps}
\caption{Diagramme des cas d'utilisation pour l'administration}
\end{figure}


\pagebreak[9]

\textbf{\large{Descriptions textuelles des principaux cas d'utilisation}}\\\\

\underline{Sommaire d'identification}\\
\textbf{Titre} : Valider une réservation\\
\textbf{Résumé} : L'administrateur consulte la liste des requêtes des
enseignants et pour chacune d'elle décide de la valider ou de la refuser. \\
\textbf{Acteurs} : Administrateur (principal), SGBD (secondaire)\\ 
\textbf{Date de création} : 1/05/2011\\\\ 
\textbf{Description du scénario}\\ 
\emph{Préconditions} : Le système et le SGBD sont fonctionnels et
l'administrateur est authentifié au système.\\\\
\textbf{Scénario nominal}

\begin{figure}[!h]
\begin{center}
\begin{tabular}{|p{6cm}|p{6cm}|}
	\hline
	\textbf{Actions acteur} & \textbf{Actions système} \\
	\hline
	1. L'administrateur demande la liste des requêtes des enseignants & 2. Le
	système consulte la base de données et renvoie la liste des requêtes des
	enseignants de l'UFR géré par l'administrateur\\ 
	3. L'administrateur choisit une requête et
	la valide ou la refuse & 4. Le système enregistre le choix de l'administrateur.
	\\ ~ & 5. Le système met à jour l'emploi du temps pour prendre en compte cette
	 nouvelle donnée.\\
	\hline	
	\end{tabular}
\end{center}
\caption{Description textuelle du cas d'utilisation \og Valider une réservation \fg}
\end{figure}

\underline{Enchainements alternatifs}

\emph{A1 : Il n'y a aucune requête à traiter}\\
L'enchainement A1 démarre au point 1. du scénario nominal.\\
2. Le système indique à l'utilisateur qu'aucune requête n'est à traiter puis
le cas d'utilisation s'arrête.\\

\pagebreak[9]

\underline{Sommaire d'identification}\\
\textbf{Titre} : Éditer l'emploi du temps\\
\textbf{Résumé} : L'administrateur édite l'emploi du temps pour y ajouter des
évènements. 
\\ \textbf{Acteurs} : Administrateur (principal), SGBD (secondaire)\\
\textbf{Date de création} : 1/05/2011\\\\ 
\textbf{Description du scénario}\\ 
\emph{Préconditions} : Le système et le SGBD sont fonctionnels et
l'administrateur est connecté au système.\\\\
\textbf{Scénario nominal}

\begin{figure}[!h]
\begin{center}
\begin{tabular}{|p{6cm}|p{6cm}|}
	\hline
	\textbf{Actions acteur} & \textbf{Actions système} \\
	\hline
	1. L'administrateur demande la page d'édition des emplois du temps au système
	& 2. Le système retourne la page d'édition des emplois du temps \\
	3. L'administrateur sélectionne une promotion & 4. Le système
	retourne l'emploi du temps courant de la promotion. \\
	5. L'administrateur ajoute un cours à une date/heure donnée, pour une
	certaine durée & 6. Le système détermine
	les salles et les enseignants disponibles et lui renvoie \\
	7. L'administrateur choisit une salle, l'enseignant du cours puis valide & 8. Le
	système valide la transaction.\\
	\hline	
	\end{tabular}
\end{center}
\caption{Description textuelle du cas d'utilisation \og Éditer l'emploi du temps \fg}
\end{figure}

\underline{Enchainements alternatifs}

\emph{A1 : L'administrateur ajoute un évènement d'ordre général}\\
L'enchainement A1 démarre au point 2 du scénario nominal.\\
3. L'administrateur indique qu'il veut ajouter un évènement d'ordre général.\\
4. L'administrateur entre la description de l'évènement, sa date, son heure et
sa durée.\\
5. Le système détermine les salles disponibles et lui renvoie.\\
6. L'administrateur sélectionne zéro, une ou plusieurs salles.\\
7. Le système enregistre la transaction puis le cas d'utilisation se termine.\\\\

\underline{Enchainements d'erreur}

\emph{E1 : L'administrateur annule l'édition}\\
L'enchainement E1 démarre n'importe où entre le point 1. et le point 7. du
scénario nominal.\\ 2. L'administrateur indique qu'il annule l'édition de
l'emploi du temps.\\ 3. Le système annule toutes les transactions déjà
enregistrées.\\ 4. Le système indique à l'utilisateur que son annulation a été prise en compte
puis le cas d'utilisation s'arrête.\\

\pagebreak[9]

Pour mieux visualiser le scénario, représentons le grâce à un diagramme de
séquence système.

\begin{figure}[!ht]
\includegraphics[scale=0.5]{img/uml/functionnal/DSS_validerreservation.eps}
\caption{Diagramme de séquence système : validation de réservation d'une salle}
\end{figure}
\newpage

Afin de représenter le déclenchement d'événements en fonction des états du
système nous avons fait avec un diagramme d'activité qui schématise concrètement
toutes les étapes (OK ou KO). Nous avons choisi de représenter l'édition de
l'emploi du temps, rappelons que cette édition ne peut etre faite que par un
utilisateur ayant les bons droits (Administrateur).

\begin{figure}[!ht]
\includegraphics[scale=0.5]{img/uml/functionnal/DA_editeredt.eps}
\caption{Diagramme d'activité pour l'administration}
\end{figure}
\newpage
\subsubsection{Etude des fonctions liées à la visualisation}
Nous arrivons à la partie visualisation, cette partie est la plus importante car
le but d'un emploi du temps, c'est qu'il puisse etre vu par tous les
utilisateurs du système.
\begin{figure}[!h]
\includegraphics[scale=0.5]{img/uml/functionnal/visualisation.eps}
\caption{Diagramme des cas d'utilisation pour la visualisation}
\end{figure}

\pagebreak[9]

\textbf{\large{Descriptions textuelles des principaux cas d'utilisation}}\\\\

\underline{Sommaire d'identification}\\
\textbf{Titre} : Consulter l'emploi du temps\\
\textbf{Résumé} : Un utilisateur souhaite visualiser l'un des trois types
d'emploi du temps.\\
\textbf{Acteurs} : Utilisateur (principal), SGBD
(secondaire)\\ 
\textbf{Date de création} : 1/05/2011\\\\ 
\textbf{Description du scénario}\\
\emph{Préconditions} : Le système et le SGBD sont fonctionnels et
l'utilisateur authentifié est sur la page de visualisation.\\\\
\textbf{Scénario nominal}

\begin{figure}[!h]
\begin{center}
\begin{tabular}{|p{6cm}|p{6cm}|}
	\hline
	\textbf{Actions acteur} & \textbf{Actions système} \\
	\hline
	1. L'utilisateur sélectionne un des trois types de visualisation (promotion,
	enseignant ou salle) & 2. Le système renvoie la page de sélection à
	l'utilisateur\\
	3. L'utilisateur sélectionne une semaine. \textbf{Point d'extension :
	Définition de filtres sur l'emploi du temps} & 4. Le système effectue une
	requête auprès de la base de données pour obtenir l'emploi du temps demandé.\\ ~ & 5. Le système renvoie l'emploi du temps à l'utilisateur. \\
	\hline	
	\end{tabular}
\end{center}
\caption{Description textuelle du cas d'utilisation \og Consulter l'emploi du temps \fg}
\end{figure}

\underline{Enchainements d'erreur}

\emph{E1 : l'utilisateur n'a pas les droits necessaires}\\
L'enchainement E1 démarre au point 1. du scénario nominal.\\
2. Le système détermine que l'utilisateur n'a pas les droits necessaires et en
informe l'utilisateur puis le cas d'utilisation s'arrête en erreur.\\

\pagebreak[9] 

Interressons nous à la partie conernant la consultation de l'emploi du
temps qui est commune à tous les utilisateurs. Le scénario nominal est le
suivant :

\begin{figure}[!h]
\includegraphics[scale=0.5]{img/uml/functionnal/DSS_consulterEDT.eps}
\caption{Diagramme de séquence système pour la visualisation}
\end{figure}
\newpage

Voici le diagramme d'activités schématisant cette consultation. Il peut y avoir
trois types de consultation par les utilisateurs du système:
\begin{description}
\item[Emplois du temps des formations]
\item[Emploi du temps des enseignants]
\item[Disponibilité des salles]
\end{description}

\begin{figure}[!h]
\includegraphics[scale=0.5]{img/uml/functionnal/DA_consulteredt.eps}
\caption{Diagramme d'activité pour la visualisation}
\end{figure}
\newpage
\subsubsection{Etude des fonctions liées à l'enseignement}
Un enseignant peut effectuer des réservations de salles ou de matériels mais
aussi définir des contraintes (nombre de TP par semaine, contraintes
horraires etc.). Dans cette partie nous allons schématiser ce processus.
Commençons par un diagramme des cas d'utilisation.

 \begin{figure}[!h]
\includegraphics[scale=0.5]{img/uml/functionnal/enseignement.eps}
\caption{Diagrame des cas d'utilisation d'un enseignant}
\end{figure}

\pagebreak[9]

\textbf{\large{Descriptions textuelles des principaux cas d'utilisation}}\\\\

\underline{Sommaire d'identification}\\
\textbf{Titre} : Réserver une salle\\
\textbf{Résumé} : Un enseignant souhaite réserver une salle pour un date et
une heure donnée.\\ 
\textbf{Acteurs} : Enseignant
(principal), SGBD (secondaire)\\ 
\textbf{Date de création} : 1/05/2011\\\\ 
\textbf{Description du scénario}\\
\emph{Préconditions} : Le système et le SGBD sont fonctionnels et
l'enseignant connecté.\\\\
\textbf{Scénario nominal}

\begin{figure}[!h]
\begin{center}
\begin{tabular}{|p{6cm}|p{6cm}|}
	\hline
	\textbf{Actions acteur} & \textbf{Actions système} \\
	\hline
	1. L'enseignant demande la page lui permettant d'effectuer une réservation & 2.
	Le système lui renvoie la page correspondante \\
	3. L'enseignant indique la date et l'heure de la réservation & 4. Le système
	détermine les salles disponibles et les renvoie à l'enseignant\\
	5. L'enseignant sélectionne une salle à réserver et valide & 6. Le système
	prend en compte la requête et la place dans la liste d'attente des requêtes à
	traiter\\
	~ & 7. Le système informe l'enseignant que sa requête a bien été prise en
	compte.\\
	\hline	
	\end{tabular}
\end{center}
\caption{Description textuelle du cas d'utilisation \og Réserver une salle \fg}
\end{figure}

\underline{Enchainements alternatifs}

\emph{A1 : L'enseignant souhaite aussi réserver un matériel}\\
L'enchainement A1 démarre au point 4. du scénario nominal.\\
5. L'enseignant indique qu'il souhaite aussi réserver un matériel\\
6. Le système détermine les matériels disponibles et renvoie la liste à
l'enseignant\\
7. L'enseignant sélectionne un ou plusieurs matériels puis valide les deux
réservations

Le scénario nominal reprend au point 6. du scénario nominal\\\


\underline{Enchainements d'erreur}

\emph{E1 : L'enseignant annule sa demande de réservation.}\\
L'enchainement E1 démarre entre le point 1. et le point 5. du scénario
nominal.\\
2. L'enseignant indique qu'il souhaite annuler sa demande de réservation\\
3. Le système annule toutes les transactions et en informe l'utilisateur et le
cas d'utilisation se termine en erreur.

\pagebreak[9]

\underline{Sommaire d'identification}\\
\textbf{Titre} : Définir une contrainte de formation\\
\textbf{Résumé} : L'enseignant responsable souhaite définir une contrainte sur
la formation qu'il gère.
\\ \textbf{Acteurs} : Enseignant responsable d'une promotion
(principal), SGBD (secondaire)\\ 
\textbf{Date de création} : 1/05/2011\\\\ 
\textbf{Description du scénario}\\
\emph{Préconditions} : Le système et le SGBD sont fonctionnels et
l'enseignant responsable authentifié sur le système.\\\\
\textbf{Scénario nominal}

\begin{figure}[!h]
\begin{center}
\begin{tabular}{|p{6cm}|p{6cm}|}
	\hline
	\textbf{Actions acteur} & \textbf{Actions système} \\
	\hline
	1. L'enseignant responsable demande la page de gestion des contraintes de
	formation & 2. Le système détermine la promotion que l'enseignant gère\\
	3. L'enseignant responable indique le type de contrainte qu'il souhaite ajouter
	(contrainte horraire, contrainte de cours etc.) & 4. Le système renvoie la page
	correspondante à l'utilisateur \\
	5. L'enseignant indique la nouvelle contrainte de formation et valide& 6. Le
	système valide la contrainte \\
	~ & 7. Le système enregistre la nouvelle contrainte dans le SGBD et en informe
	l'utilisateur \\
	\hline	
	\end{tabular}
\end{center}
\caption{Description textuelle du cas d'utilisation \og Définir une contrainte de formation \fg}
\end{figure}

\underline{Enchainements d'erreur}

\emph{E1 : L'enseignant annule sa demande de contrainte.}\\
L'enchainement E1 démarre entre le point 1. et le point 4. du scénario
nominal.\\
2. L'enseignant indique qu'il souhaite annuler sa demande de contrainte\\
3. Le système annule toutes les transactions et en informe l'utilisateur puis
se termine en erreur.\\\\

\emph{E2 : La contrainte ne peut être satisfaite}\\
L'enchainement E2 démarre au point 5. du scénario nominal\\
6. Le système détermine que la contrainte ne peut être validée.\\
7. Le système annule toutes les transactions et en informe l'utilisateur puis se
termine en erreur.\\


\pagebreak[9]
Étudions les interractions entre les acteursen représentant la
réservation d'une salle par un diagramme de séquence système. 

\begin{figure}[!h]
\includegraphics[scale=0.5]{img/uml/functionnal/DSS_reserverunesalle.eps}
\caption{Diagramme de séquence système de la réservation d'une salle}
\end{figure}
\newpage
Enfin, voici le diagramme d'activité concernant la réservation d'une salle.
Celui-ci indique les différentes étapes qu'un enseignant doit valider avant
d'obtenir sa réservation.

\begin{figure}[!h]
\includegraphics[scale=0.5]{img/uml/functionnal/DA_reserversalle.eps}
\caption{Diagramme d'activité de la réservation d'une salle}
\end{figure}
\newpage
\newpage

